widget: Move style context update out of vfunc
authorBenjamin Otte <otte@redhat.com>
Mon, 1 Oct 2012 13:43:21 +0000 (15:43 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 1 Oct 2012 13:53:17 +0000 (15:53 +0200)
Otherwise the evil widgets that don't chain up their map and unmap
vfuncs will not get updated style contexts. This is in particular true
for GtkWindow and the CSS Theming / animated backgrounds demo in
gtk-demo.

gtk/gtkwidget.c

index 91aee6c1346344a2bb8cd7bd0dbac22b252e07ca..c8f8fd51d28dd9e62d81e0cfb1b5382567e5c651 100644 (file)
@@ -4236,6 +4236,9 @@ gtk_widget_map (GtkWidget *widget)
       if (!gtk_widget_get_has_window (widget))
         gdk_window_invalidate_rect (priv->window, &priv->allocation, FALSE);
 
+      if (widget->priv->context)
+        _gtk_style_context_update_animating (widget->priv->context);
+
       gtk_widget_pop_verify_invariants (widget);
     }
 }
@@ -4263,6 +4266,10 @@ gtk_widget_unmap (GtkWidget *widget)
       if (!gtk_widget_get_has_window (widget))
        gdk_window_invalidate_rect (priv->window, &priv->allocation, FALSE);
       _gtk_tooltip_hide (widget);
+
+      if (widget->priv->context)
+        _gtk_style_context_update_animating (widget->priv->context);
+
       g_signal_emit (widget, widget_signals[UNMAP], 0);
 
       gtk_widget_pop_verify_invariants (widget);
@@ -10368,9 +10375,6 @@ gtk_widget_real_map (GtkWidget *widget)
 
       if (gtk_widget_get_has_window (widget))
        gdk_window_show (priv->window);
-
-      if (widget->priv->context)
-        _gtk_style_context_update_animating (widget->priv->context);
     }
 }
 
@@ -10393,9 +10397,6 @@ gtk_widget_real_unmap (GtkWidget *widget)
 
       if (gtk_widget_get_has_window (widget))
        gdk_window_hide (priv->window);
-
-      if (widget->priv->context)
-        _gtk_style_context_update_animating (widget->priv->context);
     }
 }